package com.uacp.sgb.datos.dominio.persistencia.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import com.uacp.sgb.datos.dominio.entidades.TipoBien;
import com.uacp.sgb.datos.dominio.persistencia.util.UtilManager;

public class TipoBienDao
{

	public static void guardar(TipoBien tipoBien) 
	{
		if(tipoBien == null)
			throw new IllegalArgumentException("Tipo de bien nulo");
			
		EntityManager em = UtilManager.getEntityManager();
		EntityTransaction et = em.getTransaction();
		
		et.begin();
		em.persist(tipoBien);
		et.commit();
		em.close();
	}
	
	public static List<TipoBien> listar()
	{
		List<TipoBien> tiposBienes;
		
		EntityManager em = UtilManager.getEntityManager();
		
		Query query = em.createNamedQuery("TipoBien.listar");
		
		tiposBienes = query.getResultList();

		em.close();
		
		return tiposBienes;
	}
	
	public static TipoBien getTipoBien(String descripcion) 
	{
		Object resultado = null;
		EntityManager em = UtilManager.getEntityManager();
		
		Query query = em.createNamedQuery("TipoBien.getTipoBien");
		query.setParameter("descripcion", descripcion);
		
		try
		{
			resultado = query.getSingleResult();
		}
		catch(NoResultException nre)
		{
			return null;
		}
		finally
		{
			em.close();
		}
		
		return (TipoBien)resultado;
	}
}
